/*
 * Created by Huang 嵘才 on 18-6-13 上午11:00
 * Copyright (c) 2018. All rights reserved.
 * Last modified 18-6-13 上午11:00
 */

package io.esirong.net;

/**
 * 响应处理
 * Created by 黄嵘才(HuangRc) on 2018/6/13.
 */

class Response<T> {
    /**
     * 框架层的处理接口
     */
    interface Net {
        /**
         * 处理HTTP 状态码
         *
         * @param httpStatusCode HTTP 状态码
         * @return true 表示处理了这个处理状态码，否则就是没有能够处理
         */
        boolean handStatusCode(int httpStatusCode);

        /**
         * 处理响应异常E
         *
         * @param error 可拋出的异常
         */
        void handResponseError(Throwable error);
    }

    /**
     * 基本业务响应处理接口
     */
    interface Base {
        /**
         * 处理服务响应业务(Response) 状态码
         *
         * @param respCode Response 状态码
         * @return true 表示处理了这个处理状态码，否则就是没有能够处理
         */
        boolean handRespCode(String respCode);

        /**
         * 处理服务响应业务(Response)
         * <p>处理业务中公共部分。如错误提示，退出功能等
         *
         * @param response Response
         * @return BaseResponse
         */
        <T> BaseResponse<T> handResp(BaseResponse<T> response);

    }
}
